#include <iostream>
#include <iomanip>
#include <deque>
using namespace std;

typedef unsigned int uint;
typedef deque <uint> Deque;
typedef Deque::iterator It;
typedef Deque::reverse_iterator Rit;
typedef Deque::const_reverse_iterator CRit;

const uint MOD = 1000000000;
const uint FILLW = 9;

ostream & operator << (ostream &os, Deque d)
{
	It it = d.begin();
	os << *it;
	for (++it; it != d.end(); ++it){
		os << setfill ('0') << setw (FILLW) << *it;
	}
	return os;
}

void operator *= (Deque &d, uint factor)
{
	Rit it;
	uint offset = 0;
	for (it = d.rbegin(); it != d.rend(); ++it)
	{
		uint &value = *it;
		value *= factor;
		value += offset;
		offset = value / MOD;
		value %= MOD;
	}
	while (offset)
	{
		d.push_front (offset % MOD);
		offset /= MOD;
	}
}


void operator += (Deque &d, const Deque &s)
{
	Rit dit;
	CRit sit;
	uint offset = 0;
	for (dit = d.rbegin(), sit = s.rbegin();
		dit != d.rend() && sit != s.rend();
		++dit, ++sit)
	{
		uint &dval = *dit;
		const uint &sval = *sit;
		dval += sval + offset;
		offset = dval / MOD;
		dval %= MOD;
	}
	while (sit != s.rend())
	{
		offset += *sit;
		d.push_front (offset % MOD);
		offset /= MOD;
		++sit;
	}
	while (dit != d.rend())
	{
		uint &dval = *dit;
		dval += offset;
		offset = dval / MOD;
		dval %= MOD;
		++dit;
	}
	while (offset)
	{
		d.push_front (offset % MOD);
		offset /= MOD;
	}
}


Deque fib[5001];

void init ()
{
	fib[0].push_front (0);
	fib[1].push_front (1);
	for (uint i = 2; i <= 5000; ++i)
	{
		Deque &f = fib[i];
		f = fib[i-1];
		f += fib[i-2];
	}
}


int main ()
{
	uint n;

	init ();

	while (cin >> n, !cin.fail())
	{
		cout << "The Fibonacci number for " << n << " is " << fib[n] << '\n';
	}

	return 0;
}